大家好,我是毛毛。
今天是Day 26
今天要來看MountainCar的訓練結果啦~ ヽ(✿゚▽゚)ノ
env = gym.make("MountainCar-v0")
dqn_agent = DQN(env=env, gamma=0.9, epsilon = .95)
print("=================================================================")
print("Old weights: \n", dqn_agent.get_weights())
print("=================================================================")
filepath = "./dqn.MountainCar_weights.h5"
if os.path.isfile(filepath):
print("Exist\n")
dqn_agent.load_weights("./dqn.MountainCar_weights.h5")
print("=================================================================")
print("Revised weights: \n", dqn_agent.get_weights())
print("=================================================================")
else:
print("Not exist\n")
這邊也跟CartPole一樣
times = 3000
max_step = 500
for time in range(times):
total_reward = 0
obs = env.reset().reshape(1,2)
for step in range(max_step):
env.render()
action = dqn_agent.choose_action(obs)
obs_, reward, terminal, _ = env.step(action)
total_reward += reward
obs_ = obs_.reshape(1,2)
dqn_agent.store_transition(obs, action, reward, obs_, terminal)
dqn_agent.replay_transition()
dqn_agent.target_replacement()
obs = obs_
if terminal:
env.render()
break
if total_reward == -200:
print("Failed to complete in time {} with {} reward".format(time, total_reward))
else:
print('Nice!! 。:.゚ヽ(*´∀`)ノ゚.:。')
print("Completed in {} times with {} steps and {} reward".format(time, step, total_reward))
dqn_agent.save_weights("./dqn.MountainCar_weights.h5")
#break
env.close()
重複的部分就不講啦,這邊因為MountainCar的回合結束,只看是不是到了終點,或是走了200步,也就是得到-200的reward,因為只要沒到終點,每一步的reward都是-1。
所以我只有在到終點的時候才將weights更新。
這邊新加的一個就是env.close()
,用來關閉gym的模擬視窗。
執行結果
這邊只放一個weights的圖,因為一開始訓練的時候幾乎不會走到終點,所以權重都沒什麼更新到,old weights和revised weights印出來基本上都一樣。
Console的執行結果,成功的結果中,所花的steps有愈來愈少的趨勢~ d(d'∀')
MountainCar的實作就到這啦~ 0(:3 )~ ('、3_ヽ)_
大家明天見
請問老師在Main當中的Max_step代表的是什麼?
總共3000次的iterations,其中每次可以走的最大步數
白話一點說是每執行一次最多只能走500步,總共執行3000次,我這樣翻譯對嗎?